console.log('a')

setTimeout(() => {
  console.log('2');
  setTimeout(() => {
    console.log('100');
  });
}, 0);

var promise = new Promise(resolve => {
  setTimeout(() => {
    console.log('3');
  }, 0);
  console.log('4');
  resolve()
})

promise.then(() => {
  console.log('5');
  setTimeout(() => {
    console.log('6');
    setTimeout(() => {
      console.log('200');
    }, 0);
  }, 0);
})

setTimeout(() => {
  console.log('7');
}, 0);

console.log('8');